//#pragma once
//
//#include "../DefinesCore.hpp"
//#include "cybertron/core/SimOneEnv.hpp"
//#include "cybertron/core/ComputerEnv.hpp"
//#include "cybertron/node/NodeSONClient.hpp"
//#include <iostream>
//
//
//#define DECLARE_APP_INSTANCE(AppClass) AppClass app;
//
//
//CYBERTRON_BEGIN
//
//struct SimOneAppInfo
//{
//	SimOneAppInfo() {
//		mAppId = "";
//		mAppType = "";
//		mAppName = "";
//		mDescription = "";
//		mTag = "";
//	}
//	std::string mAppId;
//	std::string mAppType;
//	std::string mAppName;
//	std::string mDescription;
//	std::string mTag;
//	//std::string mGroupId;
//};
//
//
//#define GET_APP_INSTANCEEx(AppClass) ((AppClass*)cybertron::NodeBaseEx::Instance())
//class NodeBaseEx : public std::enable_shared_from_this<NodeBaseEx>
//{
//public:
//	static NodeBaseEx* Instance(){
//		return mInstance;
//	}
//	NodeBaseEx();
//	~NodeBaseEx();
//	CybertronCoreAPI SimOneAppInfo& getAppInfo() { return mAppInfo; }
//	CybertronCoreAPI NodeSONClient* getNodeSONClient() { return &mNodeSONClient; }
//
//	CybertronCoreAPI bool init(/*SimOneAppInfo* pAppInfo,*/ int argc, char* argv[]);
//	CybertronCoreAPI bool create();
//
//	CybertronCoreAPI std::string getVersionOnCore(const std::string& moduleName, const std::string& version);
//	CybertronCoreAPI std::string getVersionOnDependence(const std::string& moduleName, const std::string& version, const std::string& dependenceJson);
//	//CybertronCoreAPI std::string getOSConf() { return mOSConfId; };
//
//protected:
//	CybertronCoreAPI virtual void getVerion() { };
//	CybertronCoreAPI virtual int parseArguments(int argc, char* argv[]);
//	CybertronCoreAPI virtual int beforeRun() { return 0; }
//	CybertronCoreAPI virtual int run() { return 0; }
//
//
//protected:
//	static NodeBaseEx* mInstance;
//
//protected:
//
//	SimOneEnv::SimOneConfigCenterInfo mSimOneConfigCenterInfo;
//	SimOneEnv::SimOneCloudEnvInfo mSimOneCloudEnvInfo;
//	/*ComputerEnv::CpuEnvInfo mCpuEnvInfo;
//	ComputerEnv::MemoryEnvInfo mMemoryEnvInfo;
//	ComputerEnv::DeviceIPInfos mDeviceIPInfos;
//	ComputerEnv::DiskInfos mDiskInfos;*/
//	SimOneAppInfo mAppInfo;
//
//	NodeSONClient mNodeSONClient;
//
//	//std::string mOSConfId;
//};
//
//
//struct AppDefiniton
//{
//	std::string mDescription;
//	std::string mTag;
//	std::string mAppId;
//	std::string mAppType;
//	std::string mGroupId;
//};
//
//
//#define GET_APP_INSTANCE(AppClass) ((AppClass*)cybertron::NodeBase::Instance())
//class NodeBase : public std::enable_shared_from_this<NodeBase>
//{
//public:
//	static NodeBase* Instance()
//	{
//		return mInstance;
//	}
//
//	CybertronCoreAPI void init(const std::string& moduleName);
//	CybertronCoreAPI int create(int argc, char* argv[]);
//
//	CybertronCoreAPI std::string getVersionOnCore(const std::string& moduleName, const std::string& version);
//	CybertronCoreAPI std::string getVersionOnDependence(const std::string& moduleName, const std::string& version, const std::string& dependenceJson);
//
//	CybertronCoreAPI std::string getOSConf() { return mOSConfId; };
//
//	AppDefiniton& getAppDefiniton() { return mAppDefiniton; }
//	NodeSONClient* getNodeSONClient() { return &mNodeSONClient; }
//
//protected:
//	CybertronCoreAPI virtual int getVerion(int argc, char* argv[]) = 0;
//	CybertronCoreAPI virtual int setDisplay(int argc, char* argv[]);
//	CybertronCoreAPI virtual int setupLog(int argc, char* argv[]);
//	CybertronCoreAPI virtual int parseArguments(int argc, char* argv[]);
//	CybertronCoreAPI virtual int doMisc(int argc, char* argv[]) { return 0; }
//	CybertronCoreAPI virtual int run(int argc, char* argv[]) { return 0; }
//
//protected:
//	static NodeBase* mInstance;
//
//	std::string initOSConf();
//
//private:
//	std::string mModuleName;
//	bool mIsCloudEnv;
//	SimOneEnv::SimOneConfigCenterInfo mSimOneConfigCenterInfo;
//	SimOneEnv::SimOneCloudEnvInfo mSimOneCloudEnvInfo;
//	ComputerEnv::CpuEnvInfo mCpuEnvInfo;
//	ComputerEnv::MemoryEnvInfo mMemoryEnvInfo;
//	ComputerEnv::DeviceIPInfos mDeviceIPInfos;
//	ComputerEnv::DiskInfos mDiskInfos;
//	AppDefiniton mAppDefiniton;
//
//	NodeSONClient mNodeSONClient;
//
//	std::string mOSConfId;
//};
//
//CYBERTRON_END